/**
 * @file camera_time_sync.h
 * @brief 摄像头时间同步功能
 * @version 1.0
 * @date 2023-12-05
 */

#ifndef CAMERA_TIME_SYNC_H
#define CAMERA_TIME_SYNC_H

#include <stdbool.h>
#include <stdint.h>
#include <curl/curl.h>

#ifdef __cplusplus
extern "C" {
#endif

// 摄像头类型定义
typedef enum {
    CAMERA_TYPE_400W = 0,  // 400W摄像头
    CAMERA_TYPE_800W = 1   // 800W摄像头
} CameraType;

// 摄像头配置信息
typedef struct {
    char ip[64];           // IP地址
    char username[32];     // 用户名
    char password[32];     // 密码
    CameraType type;       // 摄像头类型
} CameraAuthInfo;

/**
 * @brief 写入数据到内存的回调函数
 * 
 * @param contents 内容指针
 * @param size 大小
 * @param nmemb 数量
 * @param userp 用户参数
 * @return size_t 实际写入的大小
 */
size_t write_memory_callback(void *contents, size_t size, size_t nmemb, void *userp);

/**
 * @brief 同步摄像头时间与系统时间
 * 
 * @param auth_info 摄像头认证信息
 * @return int 0表示成功，其他表示失败
 */
int sync_camera_time(const CameraAuthInfo *auth_info);

/**
 * @brief 初始化curl库
 * 
 * @return int 0表示成功，其他表示失败
 */
int init_curl_library(void);

/**
 * @brief 清理curl库
 */
void cleanup_curl_library(void);

#ifdef __cplusplus
}
#endif

#endif /* CAMERA_TIME_SYNC_H */ 